In some protocols used for data transfer performed between network nodes, the synchronization header (SyncHeader) for data synchronization is inserted at predetermined intervals. For example, in 10 Gigabit Ethernet, 64B/66B encoding is used to transmit data in 66-bit blocks (see, for example, JP 2005-72714 A). The 66-bit block includes a 2-bit synchronization header (“01” or “10”) and a 64-bit payload. In other words, the 2-bit synchronization header is inserted every 66 bits.
Hence, a sender node encodes 64-bit data into 66 bit-data by adding a 2-bit synchronization header thereto. A receiver node finds the 2-bit synchronization header that arrives every 66 bits, and decodes the 64-bit data following the synchronization header. Further, the synchronization header having a value of “01” indicates that the 64-bit data following the synchronization header is user data, and the synchronization header having a value of “10” indicates that the 64-bit data following the synchronization header is data including a control code (see, for example, IEEE 802.3ae).